import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

// https://vite.dev/config/
export default defineConfig({
  plugins: [
    react(),
    // 自定义插件处理WASM文件MIME类型
    {
      name: 'wasm-mime',
      configureServer(server) {
        server.middlewares.use((req, res, next) => {
          if (req.url && req.url.endsWith('.wasm')) {
            res.setHeader('Content-Type', 'application/wasm')
            res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp')
            res.setHeader('Cross-Origin-Opener-Policy', 'same-origin')
          }
          next()
        })
      },
      // 也为构建时配置WASM处理
      generateBundle(options, bundle) {
        // 确保WASM文件在构建时也有正确的处理
        Object.keys(bundle).forEach(fileName => {
          if (fileName.endsWith('.wasm')) {
            bundle[fileName].type = 'asset'
          }
        })
      }
    }
  ],
  server: {
    port: 7777,
    host: true,
    // 配置WASM文件的MIME类型
    headers: {
      'Cross-Origin-Embedder-Policy': 'require-corp',
      'Cross-Origin-Opener-Policy': 'same-origin'
    },
    // 为WASM文件设置正确的MIME类型
    middlewareMode: false,
    // 配置静态文件服务
    fs: {
      // 允许访问workspace外的文件
      strict: false
    }
  },
  base: './', // 使用相对路径，支持直接打开HTML文件
  build: {
    rollupOptions: {
      output: {
        // 禁用代码分割，将所有JS打包到一个文件
        manualChunks: undefined,
        inlineDynamicImports: true
      }
    }
  },
  // 确保WASM文件被正确处理
  assetsInclude: ['**/*.wasm'],
  optimizeDeps: {
    exclude: ['curlconverter', 'web-tree-sitter'] // 排除curlconverter和web-tree-sitter以避免预构建问题
  },
  // 为静态资源设置正确的Content-Type
  define: {
    global: 'globalThis'
  },
  // 解决ES模块兼容性问题
  resolve: {
    alias: {
      // 如果需要可以添加路径别名
    }
  },
  // Worker配置
  worker: {
    format: 'es'
  }
})
